Several programming environments are known in the art for aiding software developers to write program code. For example, graphical tools are commonly used to help build graphical user interfaces that would normally take a large development effort; moreover, debuggers are used to find errors in a program (for example, allowing the developer to stop execution of the program at any point, in order to examine and change the values of variables).
Nevertheless, the task of editing the program code remains a complex and time-consuming activity. Particularly, this task is very difficult when a program written by a different person must be maintained or enhanced.
A technique commonly exploited by most developers to improve the readability of the program code is to insert comments intended to help other persons understand the corresponding logic. For example, a file storing the program starts with comments explaining its content; specific comments are used to describe any functional unit and complex operations or data structures.
Moreover, auxiliary instructions are often added to the main instructions defining a desired algorithm to be implemented. For example, those (service) instructions are used to trace an execution flow of the program for debugging purposes, to measure the performance of the program, and the like.
A drawback of the above-described scenario is that any information that is not strictly necessary to implement the desired algorithm adds complexity to the program code (for example, when displayed on a monitor of a computer). Particularly, a heavy use of the service instructions makes the program code very difficult to read. Likewise, program code that is over-commented becomes particularly irksome.
Moreover, the service instructions are continually inserted and removed during a development process. For example, the service instructions are used when necessary and are excluded converting them into comments otherwise; for this purpose, a corresponding special symbol is typically inserted or removed at the beginning of each service instruction. However, this process of manually disabling and enabling again the service instructions is time consuming and prone to errors. As a consequence, the (disabled) service instructions very often remain in the program even when they are not necessary any longer; this causes an unnecessary increase of the memory space occupied by the program.